{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 皮马印第安人糖尿病预测——Logistic回归"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. import 工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#首先 import 必要的模块\n",
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "#color = sns.color_palette()\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>serum_insulin_Missing</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.639947</td>\n",
       "      <td>0.866045</td>\n",
       "      <td>-0.031990</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>0.166619</td>\n",
       "      <td>0.468492</td>\n",
       "      <td>1.425995</td>\n",
       "      <td>1.026390</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.205066</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.852200</td>\n",
       "      <td>-0.365061</td>\n",
       "      <td>-0.190672</td>\n",
       "      <td>1.026390</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.233880</td>\n",
       "      <td>2.016662</td>\n",
       "      <td>-0.693761</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-1.332500</td>\n",
       "      <td>0.604397</td>\n",
       "      <td>-0.105584</td>\n",
       "      <td>1.026390</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.073567</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.695245</td>\n",
       "      <td>-0.540642</td>\n",
       "      <td>-0.633881</td>\n",
       "      <td>-0.920763</td>\n",
       "      <td>-1.041549</td>\n",
       "      <td>-0.974289</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.141852</td>\n",
       "      <td>0.504422</td>\n",
       "      <td>-2.679076</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>0.316566</td>\n",
       "      <td>1.549303</td>\n",
       "      <td>5.484909</td>\n",
       "      <td>-0.020496</td>\n",
       "      <td>-0.974289</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "0   0.639947                      0.866045       -0.031990   \n",
       "1  -0.844885                     -1.205066       -0.528319   \n",
       "2   1.233880                      2.016662       -0.693761   \n",
       "3  -0.844885                     -1.073567       -0.528319   \n",
       "4  -1.141852                      0.504422       -2.679076   \n",
       "\n",
       "   Triceps_skin_fold_thickness  serum_insulin       BMI  \\\n",
       "0                     0.670643      -0.181541  0.166619   \n",
       "1                    -0.012301      -0.181541 -0.852200   \n",
       "2                    -0.012301      -0.181541 -1.332500   \n",
       "3                    -0.695245      -0.540642 -0.633881   \n",
       "4                     0.670643       0.316566  1.549303   \n",
       "\n",
       "   Diabetes_pedigree_function       Age  serum_insulin_Missing  Target  \n",
       "0                    0.468492  1.425995               1.026390       1  \n",
       "1                   -0.365061 -0.190672               1.026390       0  \n",
       "2                    0.604397 -0.105584               1.026390       1  \n",
       "3                   -0.920763 -1.041549              -0.974289       0  \n",
       "4                    5.484909 -0.020496              -0.974289       1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv(\"FE_pima-indians-diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(768, 10)\n"
     ]
    }
   ],
   "source": [
    "#特征维数\n",
    "print(train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 10 columns):\n",
      "pregnants                       768 non-null float64\n",
      "Plasma_glucose_concentration    768 non-null float64\n",
      "blood_pressure                  768 non-null float64\n",
      "Triceps_skin_fold_thickness     768 non-null float64\n",
      "serum_insulin                   768 non-null float64\n",
      "BMI                             768 non-null float64\n",
      "Diabetes_pedigree_function      768 non-null float64\n",
      "Age                             768 non-null float64\n",
      "serum_insulin_Missing           768 non-null float64\n",
      "Target                          768 non-null int64\n",
      "dtypes: float64(9), int64(1)\n",
      "memory usage: 60.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>serum_insulin_Missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.639947</td>\n",
       "      <td>0.866045</td>\n",
       "      <td>-0.031990</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>0.166619</td>\n",
       "      <td>0.468492</td>\n",
       "      <td>1.425995</td>\n",
       "      <td>1.026390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.205066</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.852200</td>\n",
       "      <td>-0.365061</td>\n",
       "      <td>-0.190672</td>\n",
       "      <td>1.026390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.233880</td>\n",
       "      <td>2.016662</td>\n",
       "      <td>-0.693761</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-1.332500</td>\n",
       "      <td>0.604397</td>\n",
       "      <td>-0.105584</td>\n",
       "      <td>1.026390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.073567</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.695245</td>\n",
       "      <td>-0.540642</td>\n",
       "      <td>-0.633881</td>\n",
       "      <td>-0.920763</td>\n",
       "      <td>-1.041549</td>\n",
       "      <td>-0.974289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.141852</td>\n",
       "      <td>0.504422</td>\n",
       "      <td>-2.679076</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>0.316566</td>\n",
       "      <td>1.549303</td>\n",
       "      <td>5.484909</td>\n",
       "      <td>-0.020496</td>\n",
       "      <td>-0.974289</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "0   0.639947                      0.866045       -0.031990   \n",
       "1  -0.844885                     -1.205066       -0.528319   \n",
       "2   1.233880                      2.016662       -0.693761   \n",
       "3  -0.844885                     -1.073567       -0.528319   \n",
       "4  -1.141852                      0.504422       -2.679076   \n",
       "\n",
       "   Triceps_skin_fold_thickness  serum_insulin       BMI  \\\n",
       "0                     0.670643      -0.181541  0.166619   \n",
       "1                    -0.012301      -0.181541 -0.852200   \n",
       "2                    -0.012301      -0.181541 -1.332500   \n",
       "3                    -0.695245      -0.540642 -0.633881   \n",
       "4                     0.670643       0.316566  1.549303   \n",
       "\n",
       "   Diabetes_pedigree_function       Age  serum_insulin_Missing  \n",
       "0                    0.468492  1.425995               1.026390  \n",
       "1                   -0.365061 -0.190672               1.026390  \n",
       "2                    0.604397 -0.105584               1.026390  \n",
       "3                   -0.920763 -1.041549              -0.974289  \n",
       "4                    5.484909 -0.020496              -0.974289  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = train['Target']\n",
    "X = train.drop('Target',  axis = 1)\n",
    "feat_names = X.columns \n",
    "\n",
    "X.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1、采用log_loss调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='auto',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit='log_loss', return_train_score=True,\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import make_scorer, accuracy_score\n",
    "\n",
    "# 需要调优的参数\n",
    "tuned_parameters = {'penalty':['l1','l2'],\n",
    "                              'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "                              }\n",
    "\n",
    "# scorings = {'log_loss': 'neg_log_loss',\n",
    "#                 'accuracy': 'accuracy'\n",
    "#                  }\n",
    "##log_loss\n",
    "lr_penalty = LogisticRegression(solver='liblinear', multi_class='auto')\n",
    "grid = GridSearchCV(lr_penalty, tuned_parameters, cv=5, scoring='neg_log_loss', refit='log_loss', return_train_score=True)\n",
    "grid.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'mean_fit_time': array([0.0038002 , 0.00820055, 0.00360017, 0.00400014, 0.00400014,\n",
      "       0.00300021, 0.00240016, 0.00200009, 0.00280023, 0.00240006,\n",
      "       0.00220008, 0.00220008, 0.00300007, 0.00340014]), 'std_fit_time': array([1.32676943e-03, 9.45346239e-03, 8.00156599e-04, 8.94415679e-04,\n",
      "       1.41444824e-03, 1.09545279e-03, 4.89881921e-04, 1.50789149e-07,\n",
      "       7.48455655e-04, 4.89862441e-04, 4.00090228e-04, 3.99971037e-04,\n",
      "       1.09545278e-03, 4.89842988e-04]), 'mean_score_time': array([0.0026001 , 0.00240016, 0.00260019, 0.00220017, 0.00240016,\n",
      "       0.00180011, 0.00120001, 0.00180011, 0.00119996, 0.00160017,\n",
      "       0.00120015, 0.00100017, 0.00280023, 0.00180011]), 'std_score_time': array([4.89901382e-04, 4.89881921e-04, 1.20019913e-03, 7.48315479e-04,\n",
      "       8.00013548e-04, 3.99971008e-04, 4.00042545e-04, 4.00090228e-04,\n",
      "       3.99947177e-04, 4.89804047e-04, 4.00090228e-04, 1.50789149e-07,\n",
      "       2.13552437e-03, 3.99971037e-04]), 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
      "                   100, 1000, 1000],\n",
      "             mask=[False, False, False, False, False, False, False, False,\n",
      "                   False, False, False, False, False, False],\n",
      "       fill_value='?',\n",
      "            dtype=object), 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
      "                   'l2', 'l1', 'l2', 'l1', 'l2'],\n",
      "             mask=[False, False, False, False, False, False, False, False,\n",
      "                   False, False, False, False, False, False],\n",
      "       fill_value='?',\n",
      "            dtype=object), 'params': [{'C': 0.001, 'penalty': 'l1'}, {'C': 0.001, 'penalty': 'l2'}, {'C': 0.01, 'penalty': 'l1'}, {'C': 0.01, 'penalty': 'l2'}, {'C': 0.1, 'penalty': 'l1'}, {'C': 0.1, 'penalty': 'l2'}, {'C': 1, 'penalty': 'l1'}, {'C': 1, 'penalty': 'l2'}, {'C': 10, 'penalty': 'l1'}, {'C': 10, 'penalty': 'l2'}, {'C': 100, 'penalty': 'l1'}, {'C': 100, 'penalty': 'l2'}, {'C': 1000, 'penalty': 'l1'}, {'C': 1000, 'penalty': 'l2'}], 'split0_test_score': array([-0.69314718, -0.62554847, -0.6359066 , -0.51253466, -0.48781384,\n",
      "       -0.48329397, -0.48756813, -0.48754913, -0.48856838, -0.48857131,\n",
      "       -0.48868183, -0.48868343, -0.48869653, -0.48869475]), 'split1_test_score': array([-0.69314718, -0.63356041, -0.64460736, -0.54141117, -0.52346708,\n",
      "       -0.52324204, -0.52794247, -0.52902957, -0.53006351, -0.5301869 ,\n",
      "       -0.53030091, -0.53031203, -0.53032378, -0.53032464]), 'split2_test_score': array([-0.69314718, -0.62534001, -0.63328109, -0.50491964, -0.45692435,\n",
      "       -0.45757683, -0.45292639, -0.45346545, -0.45317988, -0.45323729,\n",
      "       -0.45321681, -0.45321764, -0.45321473, -0.45321571]), 'split3_test_score': array([-0.69314718, -0.62097215, -0.63024185, -0.48722213, -0.43240541,\n",
      "       -0.42817192, -0.42076815, -0.42101802, -0.42036747, -0.42039833,\n",
      "       -0.42033307, -0.42033734, -0.4203307 , -0.42033134]), 'split4_test_score': array([-0.69314718, -0.63238253, -0.63580105, -0.52328796, -0.48529519,\n",
      "       -0.48045543, -0.47907737, -0.47820343, -0.47830389, -0.47825946,\n",
      "       -0.47827487, -0.47826982, -0.47827102, -0.4782709 ]), 'mean_test_score': array([-0.69314718, -0.62756301, -0.63597526, -0.51389756, -0.47722891,\n",
      "       -0.47460073, -0.47371831, -0.47391625, -0.47416111, -0.47419525,\n",
      "       -0.47422623, -0.47422879, -0.47423211, -0.47423222]), 'std_test_score': array([1.11022302e-16, 4.72213398e-03, 4.79089060e-03, 1.81012667e-02,\n",
      "       3.07744269e-02, 3.13682425e-02, 3.57632158e-02, 3.59350883e-02,\n",
      "       3.65574421e-02, 3.65788847e-02, 3.66444155e-02, 3.66464988e-02,\n",
      "       3.66534495e-02, 3.66532676e-02]), 'rank_test_score': array([14, 12, 13, 11, 10,  9,  1,  2,  3,  4,  5,  6,  7,  8]), 'split0_train_score': array([-0.69314718, -0.62704619, -0.63279271, -0.50710221, -0.46447396,\n",
      "       -0.45948918, -0.45631605, -0.45621569, -0.45616259, -0.45616153,\n",
      "       -0.45616095, -0.45616094, -0.45616093, -0.45616093]), 'split1_train_score': array([-0.69314718, -0.62312038, -0.62102867, -0.49927873, -0.45765096,\n",
      "       -0.4516742 , -0.44852571, -0.44843999, -0.44838772, -0.44838684,\n",
      "       -0.44838629, -0.44838628, -0.44838627, -0.44838627]), 'split2_train_score': array([-0.69314718, -0.62765791, -0.64122227, -0.51167515, -0.47290204,\n",
      "       -0.4676322 , -0.46491588, -0.46481931, -0.46477579, -0.46477481,\n",
      "       -0.46477436, -0.46477434, -0.46477434, -0.46477433]), 'split3_train_score': array([-0.69314718, -0.62974569, -0.64391789, -0.51778994, -0.48119291,\n",
      "       -0.47560798, -0.47306112, -0.47296502, -0.47292471, -0.47292372,\n",
      "       -0.47292329, -0.47292328, -0.47292328, -0.47292328]), 'split4_train_score': array([-0.69314718, -0.62397444, -0.63418802, -0.50630875, -0.4661163 ,\n",
      "       -0.46209499, -0.45929741, -0.45919967, -0.45915457, -0.45915326,\n",
      "       -0.45915278, -0.45915277, -0.45915276, -0.45915276]), 'mean_train_score': array([-0.69314718, -0.62630892, -0.63462991, -0.50843095, -0.46846723,\n",
      "       -0.46329971, -0.46042323, -0.46032793, -0.46028108, -0.46028003,\n",
      "       -0.46027953, -0.46027952, -0.46027952, -0.46027952]), 'std_train_score': array([0.        , 0.00244096, 0.0079786 , 0.0061343 , 0.00800094,\n",
      "       0.00801733, 0.00824121, 0.00823863, 0.00824314, 0.00824313,\n",
      "       0.00824317, 0.00824317, 0.00824318, 0.00824318])}\n"
     ]
    }
   ],
   "source": [
    "#print(grid.cv_results_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4737183089435178\n",
      "{'C': 1, 'penalty': 'l1'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)\n",
    "# print(\"cv logloss mean is:\\t\", np.mean(-grid.cv_results_['mean_test_log_loss']))\n",
    "# print(\"cv accuracy mean is:\\t\", np.mean(grid.cv_results_['mean_test_accuracy']), end=\"\\n\\n\")\n",
    "\n",
    "# print(\"cv best logloss is:\\t\", -grid.best_score_)\n",
    "# print(\"cv best params are:\\t\",grid.best_params_)\n",
    "#        # plot CV误差曲线\n",
    "# test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "# test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "# train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "# train_stds = grid.cv_results_[ 'std_train_score' ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(tuned_parameters['C'])\n",
    "number_penaltys = len(tuned_parameters['penalty'])\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(tuned_parameters['C'])\n",
    "fig=plt.figure(figsize=(12,8))\n",
    "for i, value in enumerate(tuned_parameters['penalty']):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    plt.errorbar(x_axis, -test_scores[:,i], yerr=test_stds[:,i] ,label = tuned_parameters['penalty'][i] +' Test')\n",
    "    plt.errorbar(x_axis, -train_scores[:,i], yerr=train_stds[:,i] ,label = tuned_parameters['penalty'][i] +' Train')\n",
    "    \n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'logloss' )\n",
    "plt.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 1、采用log_loss调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='auto',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit='accuracy', return_train_score=True,\n",
       "       scoring='accuracy', verbose=0)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_acc = GridSearchCV(lr_penalty, tuned_parameters, cv=5, scoring='accuracy', refit='accuracy', return_train_score=True)\n",
    "grid_acc.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7682291666666666\n",
      "{'C': 0.1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "print(grid_acc.best_score_)\n",
    "print(grid_acc.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuMAAAHjCAYAAACJlRE5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xd4VFXixvHvmSQkobeE3qRJCwFCVUEpgoJKl3VFZHWxgPUnoNgQUEF0ZXVREFwFG7goFqSKIspKCTWhSw8QCGBoIYQk5/cHIwsSIECSM5m8n+eZZ+7cc+7MO+AfL9cz9xprLSIiIiIikvM8rgOIiIiIiORVKuMiIiIiIo6ojIuIiIiIOKIyLiIiIiLiiMq4iIiIiIgjKuMiIiIiIo6ojIuIiIiIOKIyLiIiIiLiiMq4iIiIiIgjga4D5KSSJUvaypUru44hIiIiIn5s+fLlB6y1YZmZm6fKeOXKlYmOjnYdQ0RERET8mDFmR2bnapmKiIiIiIgjKuMiIiIiIo6ojIuIiIiIOJKn1oyLiIiISOadOnWKuLg4kpOTXUfxSSEhIZQvX56goKArfg+VcRERERHJUFxcHIUKFaJy5coYY1zH8SnWWg4ePEhcXBxVqlS54vfRMhURERERyVBycjIlSpRQEc+AMYYSJUpc9f81UBkXERERkQu63CJ+5/hfuXP8r9mUxrdkxT9SVMZFRERERBxRGRcRERERn1WwYMEz2x06dKBo0aJ06tQpw7n9+/cnMjKS2rVrExoaSmRkJJGRkUybNu2yPnPFihXMnj37qnJnln7AKSIiIiK5wsCBA0lKSmL8+PEZjo8dOxaA7du306lTJ1atWnVFn7NixQpiY2Pp0KHDFWfNLJVxEREREbmkl75dy7o9Ry45b93e03Mys268dtnCvHhbnUxnaNOmDQsWLMj0/LNt3ryZAQMGcODAAQoUKMDEiROpUaMGU6ZMYcSIEQQEBFC8eHFmzpzJsGHDOHHiBAsWLOC5556je/fuV/SZmaEyLiIiIiJ+r1+/fkycOJGqVauyaNEiBgwYwNy5c3nppZdYsGABpUqVIjExkdDQUF544QViY2MZM2ZMtudSGRcRERGRS8rsGew/zohPfaB5dsa5LImJiSxevJhu3bqd2ZeamgrAddddxz333EOPHj3o2rVrjmdTGRcRERERv2atpWTJkhmuIZ8wYQJLlixhxowZ1K9fnzVr1uRoNl1NRURERET8WrFixShTpgzTp08HID09ndWrVwOwdetWmjVrxvDhwylWrBi7d++mUKFCHD16NEeyqYyLiIiISK5www030KNHD+bPn0/58uWZM2dOpo+dMmUK48aNo379+tSpU4cZM2YA8MQTT1CvXj3q1atH27ZtqVu3Lq1bt2b16tU0aNDgsi+LeLmMtTZbP8CXREVF2ejoaNcxRERERHKF9evXU6tWLdcxfFpGf0bGmOXW2qjMHK8z4yIiIiIijqiMZ7M7x/+aqetsioiIiEjeozIuIiIiIuKIyriIiIiIiCMq4yIiIiKSdT7oePohmaKb/mSzB/e9CGkp2PQfMB7920dERERE/kftMJulplluMiuJ/uZd11FEREREcp2CBQue2e7QoQNFixalU6dOGc7t378/kZGR1K5dm9DQUCIjI4mMjLysa4VPnz6d0aNHX3XuzNKZ8WxWKugEsSmVuXblcOIbtad0hWquI4mIiIjkSgMHDiQpKYnx48dnOD527FgAtm/fTqdOnVi1alWG81JTUwkMzLgGd+nSJWvCZpLKeDZ7OWw0RZLjGHOoPwkf30/4oPl4AgJcxxIRERG5PLOehviYS8+LX3P6OTPrxkvXg1tGZjpCmzZtWLBgQabnn+3666+nVatW/Pzzz3Tt2pUqVarwyiuvkJKSQlhYGB9//DHh4eFMnDiR2NhYxowZw913302JEiVYtmwZ8fHxvPHGG1le1rVMJQccDilPTN1B1Du5kmXTXncdR0RERCRPOnLkCAsXLuTxxx+nZcuWLF68mJUrV9K1a1feeOONDI/Zv38/ixYt4quvvuKZZ57J8kw6M55DmnR7kjVbZlNv3RvE/daR8tXquo4kIiIiknmZPYP9xxnxvt9lX5Yr1KtXrzPbO3fupGfPnsTHx3Py5Elq1KiR4TGdO3fGGENERAS7d+/O8kw6M55DjMdD6d4TSDWBHJv6d9JSU11HEhEREclTChQocGa7f//+PPHEE8TExPDOO++QnJyc4THBwcFntq21WZ5JZTybTX2gOVMfaA5AeLkqbGr4AteeWseyT19ynExEREQk7zp8+DDlypXDWsukSZOc5VAZz2GNOvVjRYGWNNzyDtvWLnEdR0RERCTXuOGGG+jRowfz58+nfPnyzJkz54rfa+jQoXTp0oVWrVpRqlSpLEx5eUx2nG73VVFRUTY6Otp1DA7t3419pzmJASWoMOhX8gWHuI4kIiIicp7169dTq1Yt1zF8WkZ/RsaY5dbaqMwcrzPjDhQPL8fOFq9QNW0ryz/K+l/lioiIiEjuoDLuSIOb72ZZkQ403vUhm1YscB1HRERERBxQGXeoZt93OGCKEzyjP8lJx1zHEREREZEcpjLuUOGiJUho/Q8qpcex6sMnXccRERERkRymMu5YvZZ3sKRkV5rtn8raRb53cXwRERGRy9F3dl/6zu7rOkauoTLuA+rdO4Y4U4Zi3z/OsSO/u44jIiIiIjlEZdwH5C9YhGO3vE2p9ATWfTDAdRwRERERn1GwYEEAVq1aRfPmzalTpw4RERFMnTr1vLn9+/cnMjKS2rVrExoaSmRkJJGRkUybNu2yPnPFihXMnj07S/JfSmCOfIpc0rVN2vHryt403zuZ1T9MpX7rO11HEhEREfEZ+fPnZ/LkyVSvXp09e/bQqFEj2rdvT9GiRc/MGTt2LADbt2+nU6dOrFq16oo+a8WKFcTGxtKhQ4csyX4xKuM+pGGfUWx7bSFlFw4mMeJGipZ0dzcoERERkbONWjqKDYc2XHLeH3Mys2782uLXMrjJ4Ex9fo0aNc5sly1blvDwcBISEs4p4xezefNmBgwYwIEDByhQoAATJ06kRo0aTJkyhREjRhAQEEDx4sWZOXMmw4YN48SJEyxYsIDnnnuO7t27Z+ozroTKuA8JDslPeud3KfpFJ9ZMepBG/zfddSQRERERn7N06VJSUlKoWrVqpo/p168fEydOpGrVqixatIgBAwYwd+5cXnrpJRYsWECpUqVITEwkNDSUF154gdjYWMaMGZON3+I0lXEfUzWiBYuX/51mO8axfOb7NLr1PteRRERERDJ9BvuPM+IfdPggW3Ls3buX3r17M2nSJDyezP38MTExkcWLF9OtW7cz+1JTUwG47rrruOeee+jRowddu3bNlswXozLug6LuHs6mUT9QdekLHGjYjpKlK7qOJCIiIuLckSNH6NixIyNGjKBZs2aZPs5aS8mSJTNcQz5hwgSWLFnCjBkzqF+/PmvWrMnKyJfk5Goqxpjixph5xpjN3udiF5hX0Rgz1xiz3hizzhhT2bvfGGNeNsZs8o49mpP5s1tgUD6Ce0wgxJ4kbtLfsenpriOJiIiIOJWSkkKXLl3OnMW+HMWKFaNMmTJMn356CXB6ejqrV68GYOvWrTRr1ozhw4dTrFgxdu/eTaFChTh69GiWf4eMuLq04dPAfGttdWC+93VGJgOjrbW1gCbAfu/+e4EKwLXesSnZGzfnVaoZyaqajxF5YjHRX73tOo6IiIiIU59//jkLFy7kww8/PHPJwsu5WsqUKVMYN24c9evXp06dOsyYMQOAJ554gnr16lGvXj3atm1L3bp1ad26NatXr6ZBgwaXfVnEy2Wstdn6ARl+qDEbgRuttXuNMWWABdbamn+aUxt4z1p7fQbHLwXustb+djmfGxUVZaOjo68meo5KT0tj/agbqXRyM0f/9hNlKtW89EEiIiIiWWT9+vXUqlXLdQyfltGfkTFmubU2KjPHuzozXspauxfA+xyewZwaQKIx5ktjzEpjzGhjTIB3rCpwpzEm2hgzyxhT/UIfZIzp550XnZCQkOVfJDt5AgIodtdEDJZDn/yd9LQ015FEREREJAtlWxk3xnxvjInN4HFHJt8iELgBeApoDFzD6eUpAMFAsvdfHBOAf1/oTay171lro6y1UWFhYVf8fVwpW7km6yKepk7KapZ+PtJ1HBERERHJQtlWxq21ba21dTN4fA3s8y5Pwfu8P4O3iANWWmu3WmtTga+AhmeNfeHdng5EZNf38AVRXR5jdWhTIje8yc5NV3YnKRERERHxPa6WqXwD9PFu9wG+zmDOMqCYMeaP09mtgXXe7a+8rwFaAZuyKadPMB4P5XpPINkEc+LzfqSeSnEdSURERESygKsyPhJoZ4zZDLTzvsYYE2WMmQhgrU3j9BKV+caYGMBweknKH8d38+5/Fbg/h/PnuJJlK7Gl8UvUTN1I9CdDXccRERERydCO3vewo/c9rmPkGk5u+mOtPQi0yWB/NGcVa2vtPDJYgmKtTQQ6ZmdGX9So4/0sX/8tDbeNY0vM7VStl/mL3YuIiIiI73F1ZlyuUNV7x3PEFMJMf4CTyUmu44iIiIhkq4IFCwKwatUqmjdvTp06dYiIiGDq1Knnze3fvz+RkZHUrl2b0NDQM9cjv5xrhU+fPp3Ro0dnWf5LcXJmXK5c0ZKlWX3DKOr//AC/Tn6a5v3ech1JREREJNvlz5+fyZMnU716dfbs2UOjRo1o3749RYsWPTNn7NixAGzfvp1OnTpd8KZAqampBAZmXIO7dOmS9eEvQmU8F6rfphfLYr6hye7JbFh2O9c2bus6koiIiPi5+Fde4eT6DZecl7zh9JzMrBsPrnUtpYcMydTn16hR48x22bJlCQ8PJyEh4ZwyfjHXX389rVq14ueff6Zr165UqVKFV155hZSUFMLCwvj4448JDw9n4sSJxMbGMmbMGO6++25KlCjBsmXLiI+P54033sjysq5lKrnUtX3/xX5TkgIzH+HE8aOu44iIiIjkmKVLl5KSkkLVqlUv67gjR46wcOFCHn/8cVq2bMnixYtZuXIlXbt25Y033sjwmP3797No0SK++uornnnmmayIfw6dGc+lChUpzo52b1J33t0s+fBxmvZ/33UkERER8WOZPYP9xxnxSh9NzpYce/fupXfv3kyaNAmP5/LOK/fq1evM9s6dO+nZsyfx8fGcPHnynDPvZ+vcuTPGGCIiIti9e/dVZc+IzoznYnWvu40l4T1omjCN2J8zulS7iIiIiP84cuQIHTt2ZMSIETRrdvlXlStQoMCZ7f79+/PEE08QExPDO++8Q3JycobHBAcHn9m21l5+6EtQGc/lIvq8yS5TlpLzn+RI4kHXcURERESyRUpKCl26dOGee+6hR48eV/1+hw8fply5clhrmTRpUhYkvDIq47lcaIFCJHUcS5g9yIYPB7iOIyIiIpItPv/8cxYuXMiHH3545pKFF7paSmYMHTqULl260KpVK0qVKpWFSS+PyY7T7b4qKirKRkdHu46RLRZPeIxmuz9k1fXjiGz7F9dxRERExA+sX7+eWrVquY7h0zL6MzLGLLfWRmXmeJ0Z9xMN7xnFloAqlP/laX5P2Os6joiIiIhkgsq4n8gXHILpMp7C9ijbJvXDpqe7jiQiIiIil6Ay7keuqduU5dc8RMNjC1k+c6LrOCIiIuIH8tKS5suVFX82KuN+pslfh7Ix8FqqRw8lYc9213FEREQkFwsJCeHgwYMq5Bmw1nLw4EFCQkKu6n100x8/ExAYRP5eE8n3UWu2T76fkoPmYi7zgvgiIiIiAOXLlycuLo6EhATXUXxSSEgI5cuXv6r3UBn3QxWq1WNJrSdpumEkS78cQ5PuT7qOJCIiIrlQUFAQVapUcR3Dr+mUqZ9q3GMQscGR1IkZxZ5tG1zHEREREZEMqIz7KU9AACX/OpF0DImf3U96WprrSCIiIiLyJyrjfqx0xeqsj3yW2ikxLJ3ysus4IiIiIvInKuN+rvEd/VmVvzkNNr3Fjg0rXMcRERERkbOojPs54/FQ/p73SDIhpEzrx6mUk64jiYiIiIiXyngeULJ0RbY1HU711M1Ef/KC6zgiIiIi4qUynkc0vKUvywu3IWr7BH5b/YvrOCIiIiKCynieUr3POBJNYQK/fojkE8ddxxERERHJ81TG85DCJcLZ02o0ldN3snLyINdxRERERPI8lfE8pv5NPVhS/Haa7vmEDUvmuo4jIiIikqepjOdBde59i3hPOAVnP8Lxo4mu44iIiIjkWSrjeVDBwsVIvPmflE3fR8ykx13HEREREcmzVMbzqNrNb2Fp6V40OzCdNT9Ndx1HREREJE9SGc/DIvu8zg5PBUr/+CSHfz/gOo6IiIhInqMynoeF5C9Iym3vUNwmsunDh1zHEREREclzVMbzuOoNWrKs4t9ofHguK+Z85DqOiIiISJ6iMi5E9X6Z3wKqUvnXIRzcF+c6joiIiEieoTIuBOULIbDbeAraJHZOfgCbnu46koiIiEieoDIuAFSu3ZgV1frT4PgvRH873nUcERERkTxBZVzOaPyXF9gQVJuaK4exL26L6zgiIiIifk9lXM4ICAykUK8JBNo09n38dy1XEREREclmKuNyjnJV6xJT5ykikpezZNobruOIiIiI+DWVcTlPk+5PERPckHprR7N761rXcURERET8lsq4nMd4PIT3nkiaCeDIZ/eTlprqOpKIiIiIX1IZlwyVKl+VTQ2fp9apdSz7bJjrOCIiIiJ+SWVcLqhRpwdZWeB6Gv42lu3ro13HEREREfE7KuNyQcbjodI94zlm8pM6rR+nUk66jiQiIiLiV1TG5aKKlyrPjhavUC1tC9EfDXEdR0RERMSvqIzLJTW4uTfLitxM453/ZtOKha7jiIiIiPgNJ2XcGFPcGDPPGLPZ+1zsAvMqGmPmGmPWG2PWGWMqe/e3McasMMasMsb8YoyplpP586Ia977LIVOU4BkPk5x0zHUcEREREb/g6sz408B8a211YL73dUYmA6OttbWAJsB+7/53gb9aayOBT4HnsjlvnlekWEn2tX6DSum7WDXpKddxRERERPyCqzJ+BzDJuz0J6PznCcaY2kCgtXYegLX2mLU2yTtsgcLe7SLAnuyNKwD1WnZlSYkuNImfwtpfZ7mOIyIiIpLruSrjpay1ewG8z+EZzKkBJBpjvjTGrDTGjDbGBHjH7gdmGmPigN7AyAt9kDGmnzEm2hgTnZCQkMVfI++p13cMez3hFJv7GMeO/O46joiIiEiulm1l3BjzvTEmNoPHHZl8i0DgBuApoDFwDXCvd+wJ4FZrbXngA+AfF3oTa+171tooa21UWFjYFX8fOS1/waIc7fA2pdP3s/bDR13HEREREcnVsq2MW2vbWmvrZvD4GthnjCkD4H3en8FbxAErrbVbrbWpwFdAQ2NMGFDfWrvEO28q0CK7voec79qm7Vla9i6aHvqG1T/+x3UcERERkVzL1TKVb4A+3u0+wNcZzFkGFPOWb4DWwDrgd6CIMaaGd387YH02ZpUMRN4zmu2eipT9aSCHD+5zHUdEREQkV3JVxkcC7YwxmzldpkcCGGOijDETAay1aZxeojLfGBMDGGCC9yz534EvjDGrOb1mfKCD75CnhYQWIPWOdylqj7B50sOu44iIiIjkSsZa6zpDjomKirLR0dGuY/iVxf8eRLOd41nRdAwNb+nrOo6IiIiIc8aY5dbaqMzM1R045apE3T2czYHVqbLkeRLid7qOIyIiIpKrqIzLVQnMF0y+7uPJb5OJm/wANj3ddSQRERGRXENlXK5apWsbsbLGIzRI+i/Lvh7rOo6IiIhIrqEyLlmiSa/nWJevHrVWvUz8zs2u44iIiIjkCirjkiU8AQEU/csEAkjnwCf3k56W5jqSiIiIiM9TGZcsU7ZKLWLrDabuyVUs+89rruOIiIiI+DyVcclSjbs+wZqQxkSs/we7Nq92HUdERETEp6mMS5YyHg9lek/glAkiaWo/Uk+dch1JRERExGepjEuWCytXhU2NXqRm6gaWfTrUdZwM3Tn+V+4c/6vrGCIiIpLHqYxLtmjU8e+sKNiKRlvfZWvsEtdxRERERHySyrhkC+PxUKXPeI6agtjpD5ByMtl1JBERERGfozIu2aZYWBl2XTeSqmnbWD75addxRERERHyOyrhkq8h2d7Gs6C00ifuQjdE/uI4jIiIi4lNUxiXbXXvvWBJMCfJ/158Tx4+6jiMiIiLiM1TGJdsVKlqCg23+QQW7h9WTnnQdR0RERMRnqIxLjqhzwx0sCetOs/2fE7voW9dxRERERHyCyrjkmIh7x7DLlKXEvCc4eviQ6zgiIiIizqmMS44JLVCIpI5vE24PsP7DAa7jiIiIiDinMi45qmZUW5aV602T379j1fwpruOIiIiIOKUyLjmuwT2j2OapTPmfB5N4IN51HBERERFnVMYlxwWH5Ce98zgK26P8NulB13FEREREnFEZFyeqRjRnRZUHiDr6I8u/m+g6joiIiIgTKuPiTNRfX2JjYE2qLnuRA3t2uI4jIiIikuNUxsWZwKB85O/5HiH2JLs/uh+bnu46koiIiEiOUhkXpyrUiGT1tY9T/8RSlk1/y3UcERERkRylMi7ONe75DGvz1afOmlfZs32j6zgiIiIiOUZlXJzzBARQ/K8TsBh+//Q+0tPSXEcSERERyREq4+ITylSqyfr6T1MnJYalU191HUdEREQkR6iMi8+I6vwoq0ObErlxDDs2rnIdR0RERCTbqYyLzzAeD+XumUCyCebkf/5O6qkU15FEREREspXKuPiUkmUqsbXJMGqkbmLZxy+4jiMiIiKSrVTGxec0vPU+lhe6iUbb32PLmv+6jiMiIiKSbVTGxSdVu3ccR0whPF89yMnkJNdxRERERLKFyrj4pCIlSrOn5WtUSd/BikmDXccRERERyRYq4+KzIlrfybJiHWmy5yM2LJ3nOo6IiIhIllMZF59Wq++/2O8pScFZj5B07LDrOCIiIiJZSmVcfFrBwsX5vd0/KW/3EvPh467jiIiIiGQplXHxebVbdGRJeE+aHviSmIVfu44jIiIikmVUxiVXqH/vm+z0lCPshyc5knjQdRwRERGRLKEyLrlCSP6CJHd6hzB7kI0fPOw6joiIiEiWUBmXXKNGwxtZVuFeGh+ezcq5H7uOIyIiInLVVMYlV2nYeyRbAq6h4n+HcGj/btdxRERERK6KyrjkKvmCQ/B0HU8he4ztkx7Epqe7jiQiIiJyxVTGJdepUqcJK6o+TMPjC1k+4z3XcURERESumJMybowpboyZZ4zZ7H0ulsGcm4wxq856JBtjOnvHqhhjlniPn2qMyZfz30JcanzXUDYE1aLGimHs373NdRwRERGRK+LqzPjTwHxrbXVgvvf1Oay1P1prI621kUBrIAmY6x0eBbzpPf534L6ciS2+IiAwkIJ3TiDQprL3o79ruYqIiIjkSq7K+B3AJO/2JKDzJeZ3B2ZZa5OMMYbT5XzaZRwvfqh8tXrE1H6S+snLWPrFP1zHEREREblsrsp4KWvtXgDvc/gl5vcCPvNulwASrbWp3tdxQLkLHWiM6WeMiTbGRCckJFxlbPE1TXoMJDa4AfViX2P31nWu44iIiIhclmwr48aY740xsRk87rjM9ykD1APm/LErg2n2Qsdba9+z1kZZa6PCwsIu56MlFzCeAErePZE04+HwZ38nLTX10geJiIiI+IhsK+PW2rbW2roZPL4G9nlL9h9le/9F3qonMN1ae8r7+gBQ1BgT6H1dHtiTXd9DfF/pCtXYEPkctU/FsmzKCNdxRERERDLN1TKVb4A+3u0+wNcXmfsX/rdEBWutBX7k9DryzBwveUDU7Q+zKn8LGmz+F9vXL3cdR0RERCRTXJXxkUA7Y8xmoJ33NcaYKGPMxD8mGWMqAxWAn/50/GDgSWPMb5xeQ/5+DmQWH2Y8Hir0eY8kE8qpaf04lXLyovNfODiQFw4OzKF0IiIiIhlzUsattQettW2stdW9z4e8+6OttfefNW+7tbactTb9T8dvtdY2sdZWs9b2sNZevHlJnlCiVAW2NxtG9bTfiP74OddxRERERC5Jd+AUv9KgQ1+WF25L1I732bzqZ9dxRERERC5KZVz8TrV7x/G7KULQNw+RfOK46zgiIiIiF6QyLn6nSPEw4m8cTeX0XayapHXhIiIi4rtUxsUvRdzYnaXFb6fJ3k9Zt3i26zgiIiIiGVIZF79V5963iPeEU2TOoxw/mug6joiIiMh5VMbFbxUoXIzE9m9RJn0/sR8+5jqOiIiIyHlUxsWv1W7WgaVl/kLTg1+xZsEXruOIiIiInENlXPxeZJ/X2eGpQOkFT3H4UILrOCIiIiJnqIyL3wsJLcCp296huE1k04cPuY4jIiIicobKuOQJ1Rq0JLrifTQ+Mo8Vsye5jiMiIiICqIxLHtKo98v8FlCVKouf41hakOs4IiIiIirjkncE5QsmqPt75LcnMKeSsOnWdSQRERHJ41TGJU+pVCuKldUH0MSzgd2phVzHERERkTxOZVzynMa9nmNjenka2nUkHDzgOo6IiIjkYSrjkucEBAbye2AYYeYwKz8a4jqOiIiI5GEq45InFQpMZYWtwY2/T2Phfxe5jiMiIiJ5lMq45FkhQQGc8gQTMO9ZEo+fdB1HRERE8iCVccmzrCeQo03/j+vsSqZNed91HBEREcmDVMYlTyvd9lEOhlam7Y4x/LRul+s4IiIikseojEveFpiPQl3eoLJnH+u+eJWjyadcJxIREZE8RGVc8rx8NdqSWPFm+qRO491vFrqOIyIiInmIyrgIULTza+TzWGrEvM7irQddxxEREZE8QmVcBKB4FWyLR+gc8F8++XwKyafSXCcSERGRPEBlXMQrqNVTnMxfhgeTxjNm7nrXcURERCQPUBkX+UO+/ATf+gp1PDs49t/3Wb0r0XUiERER8XMq4yJnq9OF1AotGBj0OcP/s4iU1HTXiURERMSPqYyLnM0YAjuOprBJ4rZDH/DOgt9cJxIRERE/pjIuedKwEqMZVmJ0xoOl62Ia30/vwPmBUdQeAAAgAElEQVTM/3E+G+OP5mw4ERERyTNUxkUycuMzEFqUoUGTGfSfVaSmabmKiIiIZD2VcZGM5C+Op83zNGIdFfbO4d+LtrlOJCIiIn5IZVzkQhr2wZaOYFjoFN6Zu4ZtB467TiQiIiJ+RmVc5EI8AZhbR1M8LYGHA79h8BdrSE+3rlOJiIiIH1EZF7mYis2gXk/u83xL/Pb1fLJ0p+tEIiIi4kdUxkUupd1LeALy8WbRzxk5cz27E0+4TiQiIiJ+QmVc5FIKl8W0fIpGJ36lBasY8mUM1mq5ioiIiFw9lXGRzGjeH4pfw+sFP+O/m/by5YrdrhOJiIiIH1AZF8mMwGDoMJIiSdt5ruRChs1Yx/6jya5TiYiISC6nMi6SWTXaQ/Wb6X1yCgVOHeTFr9e6TiQiIiK5nMq4yOVo/yqetJO8X/47ZsXGMytmr+tEIiIikoupjItcjpLVoPnD1Ir/lq7he3j+67UkJqW4TiUiIiK5lMq4yOVqORAKlubl4MkcTkpm+Iz1rhOJiIhILnXZZdwY4zHGFM6OMCK5QnAhaDeM0IQ1vF1rPV+siGPBxv2uU4mIiEgulKkyboz51BhT2BhTAFgHbDTGDMzeaP6h7+y+9J3d13UMyWoRPaF8E9rvHUf9MHh2eizHTqa6TiUiIiK5TGbPjNe21h4BOgMzgYpA72xLJeLrjIFbR2OSDvJexfnsOXyCUbM2uE4lIiIiuUxmy3iQMSaI02X8a2vtKeCKb0FojClujJlnjNnsfS6WwZybjDGrznokG2M6e8c+McZsNMbEGmP+7c0mkrPKRkKjPpRaP4mBDeCjxTtYsvWg61QiIiKSi2S2jI8HtgMFgIXGmErAkav43KeB+dba6sB87+tzWGt/tNZGWmsjgdZAEjDXO/wJcC1QDwgF7r+KLCJXrvXzkK8ADySNo2KxUJ7+MobkU2muU4mIiEgukakybq19y1pbzlp7qz1tB3DTVXzuHcAk7/YkTp9xv5juwCxrbZI3z0xvDgssBcpfRRaRK1egJNz0LAHbF/Je471sO3CcN+dtcp1KREREconM/oDzMe8POI0x5n1jzApOn62+UqWstXsBvM/hl5jfC/gsg1xBnF67PvtCBxpj+hljoo0x0QkJCVcRWeQCou6D8Npcu2YkvaPCmfDzVlbvSnSdSkRERHKBzC5T+Zv3B5w3A2FAX2DkxQ4wxnzvXdP958cdlxPQGFOG08tR5mQw/A6w0Fr784WOt9a+Z62NstZGhYWFXc5Hi2ROQCDcMgoSd/Js0XmEFwph8BdrSElNd51MREREfFxmy7jxPt8KfGCtXX3WvgxZa9taa+tm8Pga2Oct2X+U7YtdpLknMN37o9H/BTLmRU7/w+DJTH4HkexTpSXU7kzI4n/yxs3F2BB/lHcW/OY6lYiIiPi4zJbx5caYuZwu43OMMYWAqznt9w3Qx7vdB/j6InP/wp+WqBhj7gfaA3+x1ur0o/iGm4cDhuu2/pM7Issy9sff2Bh/1HUqERER8WGZLeP3cfqKJ429P6LMx+mlKldqJNDOGLMZaOd9jTEmyhgz8Y9JxpjKQAXgpz8dPw4oBfzqvezhC1eRRSRrFK0I1z8B675ieP3fKRwSxKBpq0lN078XRUREJGOBmZlkrU03xpQH7jLGAPxkrf32Sj/UWnsQaJPB/mjOukyhtXY7UC6DeZnKLZLjrnsUVn1M4R+f5aVOUxkwNYZ/L9pGv5ZVXScTERERH5TZq6mMBB4D1nkfjxpjXs3OYCK5UlAotH8F9q+j48mZtKtdijfmbmL7geOuk4mIiIgPyuwylVuBdtbaf1tr/w10ADpmXyyRXOzaTnDNjZgFr/DyzaXJF+hh8BdrSE+/4pvWioiIiJ/KbBkHKHrWdpGsDiLiN4yBDqMg5Tjhy0bzXMdaLNl2iE+X7nSdTERERHxMZsv4q8BKY8yHxphJwHLgleyLJZLLhV8LTR6A5ZPoWfYg11crychZG9iTeMJ1MhEREfEhmSrj1trPgGbAl95Hc2vtlOwMJpLr3TgYCpTEzBrEq13qkpZuGTI9Bmu1XEVEREROu2gZN8Y0/OMBlAHigF1AWe8+EbmQkCLQ5kWIW0qFuBkM6lCTBRsTmL5yt+tkIiIi4iMudYnANy4yZoHWWZhFxP9E/hWi34d5L9Cn/zJmrCnGsBnruKF6GGGFgl2nExEREccuembcWnvTRR4q4iKX4vHAra/DsXg8v7zBqG4RJKWk8eI3sa6TiYiIiA/I1M1zjDFdM9h9GIix1u7P2kgifqZ81Okz5L+OpVqD3jzWpjqj52xkduxeOtQt4zqdiIiIOJTZq6ncB0wE/up9TACeBBYZY3pnUzYR/9HmRQgMgTnP0K/lNdQpW5jnvlpLYlKK62QiIiLiUGbLeDpQy1rbzVrbDagNnASaAoOzK5yI3yhU6vTVVTbPJWjLPF7rHkFiUgrDZ6x3nUxEREQcymwZr2yt3XfW6/1ADWvtIeBU1scS8UNNHoAS1WH209QJD+HBVlX5YkUcCzZqpZeIiEheldky/rMxZoYxpo8xpg/wDbDQGFMASMy+eCJ+JDAf3DIKDm2FX8fySJtqVAsvyLPTYzl2MtV1OhEREXEgs2W8P/ABEAk0ACYB/a21x621N2VXOBG/U60N1OwIC18nOGkfo7pFsOfwCUbN2uA6mYiIiDiQ2TtwWuAX4Afge2Ch1W0ERa5M+5chPRXmvUijSsXo26IKHy3ewZKtB10nExERkRyWqTJujOkJLAW6Az2BJcaY7tkZTMRvFa8CLR6BmM9h52Keal+DCsVDefrLGJJPpblOJyIiIjkos8tUngUaW2v7WGvvAZoAz2dfLBE/d8OTULgczHyK/IGGkV0j2HbgOG9+v8l1MhEREclBmS3jnj/d3OfgZRwrIn+WrwDcPBziY2DFJK6rVpJejSswYeFW1sTpN9EiIiJ5RWYL9WxjzBxjzL3GmHuB74CZ2RdLJHtNfaA5Ux9o7jZEna5Q6TqYPxySDjGkYy3CCgUzaNoaUlLT3WYTERGRHJHZH3AOBN4DIoD6wHvWWt3sR+RqGHP6UofJibDgVQqHBPFy53psiD/Kuwu2uE4nIiIiOSDTS02stV9Ya5+01j5hrZ2enaFE8ozS9SDqPlg2EeJjaVu7FLfXL8u/ftzMxvijrtOJiIhINrtoGTfGHDXGHMngcdQYcySnQor4tZuGQEgRmDUYrOXF22pTKCSIQV+sIS1dVxAVERHxZxct49baQtbawhk8CllrC+dUSBG/lr84tH4edvwCa6dTomAwQ2+vw+pdifz7l22u04mIiEg20hVRRHxBo3tPL1mZ+zykHOe2iDK0rVWK1+duZPuB467TiYiISDZRGRfxBZ4AuGU0HImDX8ZgjOHlLnXJF+hh8BdrSNdyFREREb+kMi7iKyo1h3o9YNE/4dA2ShUO4bmOtViy7RCfLt3pOp2IiIhkA5VxEV/Sbhh4AmHucwD0jKrA9dVKMnLWBvYknnAcTkRERLKayriILylcFlr+H2yYAb/NxxjDq13rkZZuGTI9Bmu1XEVERMSfqIyL+JrmA6BYFZj9NKSdokLx/AzqUJMFGxOYvnK363QiIiKShVTGRXxNYDB0GAkHNsGS8QD0aV6ZRpWKMWzGOhKOnnQcUERERLKKyriIL6rRHqq1gwUj4eg+PB7DqG4RJJ1MY+g3a12nExERkSyiMi7ii4yBDq9CajLMHwZAtfCCPNa2Ot/F7GV2bLzjgCIiIpIVVMZFfFXJ6tDsIVj1McQtB6Bfy2uoXaYwz38dy+GkU44DioiIyNVSGRfxZa0GQcFSMPMpSE8nKMDDa90jOHQ8heHfrXOdTkRERK6SyriILwsudPra43tWwOpPAahbrggPtrqGacvj+GlTguOAIiIicjVUxkV8Xb2eUL4JfD8Ukg8D8Ejr6lQNK8CQL2M4djLVbT4RERG5YirjIr7O44FbX4PjB+Cn1wAICQrgte712XP4BK/N3uA4oIiIiFwplXHJk/rO7kvf2X1dx8i8sg2g4T2wZBwkbASgUaVi3NuiMpN/3cHSbYccBxQREZEroTIuklu0eQGCCsCsQWAtAAPb16RC8VAGf7GG5FNpjgOKiIjI5VIZz2a93l5Lr7d1kxbJAgVKwk1DYOsC2PAdAPnzBTKyawTbDhznze83uc0nIiIil01lXCQ3aXwfhNWCOc/AqRMAXFetJL0aV2DCwq2siUt0HFBEREQuh8q4SG4SEAS3jILEnfDff53ZPaRjLcIKBTNo2hpSUtMdBhQREZHLoTIukttc0wpq3wE/vwGJuwAoHBLEy53rsSH+KO8u2OI4oIiIiGSWyrhIbnTzCMDCvOfP7GpbuxS31y/Lv37czMb4o+6yiYiISKY5KePGmOLGmHnGmM3e52IZzLnJGLPqrEeyMabzn+a8bYw5lnPJRXxE0Ypw/ROwdjps+/nM7hdvq02hkCAGfbGGtHTrMKD4izvH/8qd4391HUNExG+5OjP+NDDfWlsdmO99fQ5r7Y/W2khrbSTQGkgC5v4xboyJAormUF4R33PdY1CkIswaDGmn78JZomAwL95Wm9W7Evlg0TbHAUVERORSXJXxO4BJ3u1JQOeLzAXoDsyy1iYBGGMCgNHAoGxLKOLrgkKh/cuwfy1E//vM7tvrl6VtrXBen7uR7QeOOwwoIiIil+KqjJey1u4F8D6HX2J+L+Czs14PAL754z0uxhjTzxgTbYyJTkhIuOLAIj6p1m1QpRX8OAKOHwTAGMOIzvUI8nh4+ss1pGu5ioiIiM/KtjJujPneGBObweOOy3yfMkA9YI73dVmgB/B2Zo631r5nrY2y1kaFhYVd7tcQ8W3GnL7U4clj8MPwM7tLFwnh2Y61WLz1EJ8t2+kwoIiIiFxMYHa9sbW27YXGjDH7jDFlrLV7vWV7/0Xeqicw3Vp7yvu6AVAN+M0YA5DfGPObtbZaVmUXyVXCa0GTfrBkHET1hTL1AbizcQW+XbOHV2du4Kaa4ZQtGuo4qORG2/O97t36wmkO+Z+mH3QDYElf/Z34Ev29+J7c8nfiapnKN0Af73Yf4OuLzP0LZy1RsdZ+Z60tba2tbK2tDCSpiEued+PTkL8EzBwE9vSyFGMMI7tGkJZueXZ6DNZquYqIiIivcVXGRwLtjDGbgXbe1xhjoowxE/+YZIypDFQAfnKQUST3CC0KbV+EXYsh5j9ndlconp+B7Wvy48YEvlq122FAERERyYiTMm6tPWitbWOtre59PuTdH22tvf+sedutteWstRe8v7e1tmBOZBbxeZF3Q9kGMPd5OPm/m/70aVGZhhWL8tK360g4etJhQBEREfkz3YFTxF94PHDLaDgWDz+/cWZ3gMfwWvcIkk6mMfSbtQ4DioiIyJ+pjIv4kwqNof5d8N9/wcEtZ3ZXCy/EY22r813MXmbHxjsMeGFNP+h25sc2IiIieYXKuIi/afsiBIbA7GfO2d2v5TXULlOY57+O5XDSqQscLCIiIjlJZVzE3xQqDa0GweY5sGnOmd1BAR5e6x7BoeMpDP9uncOAIiIi8geVcRF/1PRBKFH99Nnx1P/9aLNuuSI82Ooapi2P46dNuiOtiIiIayrjIv4oMB90GAmHtsDid88ZeqR1daqGFWDIlzEcO5nqKKCIiIiAynjO0M1WxIXqbaHmrbBwNBzZe2Z3SFAAr3WPYM/hE7w2e4PDgCIiIqIyns1Cj6cStvcEKdu3u44ieVH7lyEtBb5/8ZzdjSoVp0/zykz+dQdLtx1yFE5ERERUxrOZJ90SnJzG1ttuJ+Gtt0hPTnYdSfKS4tdAi0dgzVTYuficoYHta1K+WCiDv1hD8qk0RwFFRETyNpXxbJZQPJCYWqEUat+eA++8y9ZOt3H0xx9dx5K85Ib/g0JlYdYgSP9f6S4QHMjIrhFsO3CcMd9vdhhQREQk71IZz2Y/XpvKq7ed4oPuRSjy3j8xwcHEPfQwux7uT0pcnOt4khfkKwA3D4e9q2HF5HOGrq9ekjujKjDh563ExB12FFBERCTvUhnPZi03BdJ0awDTNk2jy67nmfdSB4o++RjHFy9ma8dOHHj3XdJTUlzHFH9XtxtUbAHzh8GJ388ZGtKxFiUL5mPgtNWkpKY7CigiIpI3qYxns0InDd1W5GP6HdNpUbYFY9eO5y9FprD+rQcp0KolCf98i2233c6xXxa5jir+zBi49TVIToQfXz1nqEhoECM612ND/FHG/bTFUUAREZG8SWU8h1QpUoU3b3qTj275iIqFK/LClrd4+KZtHHylPxbYdf/9xD32OKfi411HFX9Vuh5E/Q2WTYR9a88Zale7FLfVL8vbP2xm076jjgKKiIjkPSrjOSwyPJJJHSbxz5v+CcBDR8czon8JUu/vybEFC9hya0cOvv8+VktXJDvc9CyEFIZZg8+7/v3Q22pTKCSIQdPWkJaua+OLiIjkBJVxB4wxtK7Ymul3TOf5Zs+zI3kPd4V9ySfPN8U0imD/6NfZ2qUrx5csdR1V/E3+4tD6Odj+M6z76pyhEgWDefG22qzalcgHi7Y5CigiIpK3qIw7FOgJpGfNnnzX5TsejnyYuSdXcecNK1n0eCtSk5PY2acPu58ayKn9+11HFX/SqC+UqgdznoOUpHOGbq9flra1wnl97ka2HzjuKKCIiEjeoTLuA/IH5eeh+g/xXdfv6F6jO2PzL+FvvY+yvVsTjsyZw9ZbO3Jo8mRsaqrrqOIPPAGnf8x5JA4WjTlnyBjDiM71CPJ4ePrLNaRruYqIiEi2Uhn3ISVDS/Jcs+eYfsd0mla+gUE1VvDCQ4U5XKM0+155lW3dupO0YoXrmOIPKrWAut3hlzHw+/ZzhkoXCeHZjrVYvPUQny3b6SafiIhIHqEy7oMqF6nMP278Bx/d8hH5q1Tlvpu3MfmvpTl+aD877vore54ZQurBg65jSm7Xbtjps+Rznj1v6M7GFbiuWglenbmBPYknHIQTERHJG1TGfVhkeCQfdviQf7Z+i9i6Bel7zxH+27o0id98w5ZbbuX3zz7DpqVd+o1EMlKkHNzwf7BhBmz54ZwhYwwju0aQlm55dnoM1mq5ioiISHZQGfdxZ195ZXCrF/n4Rnjyb7CrTCDxLw1j+529OBET4zqm5FbNB0CxyjDraUg7dc5QheL5Gdi+Jj9uTOCrVbvd5BMREfFzKuO5RKAnkB41evBdl+/o3HYAz/Y4xVt3BPJ73Ba297yTvS8OJfX33y/9RiJnCwqBDiPhwEZYOuG84T4tKtOwYlFe+nYdCUdPOggoIiLi31TGc5n8Qfl5sP6DfNdtJuW79GLAfenMbhLIof98zpZbbiFx2jRserrrmJKb1OgA1drCglfh2LmX0QzwGF7rHkHSyTSGfrv2Am8gIiIiV0plPJcqGVqSZ5s9y6c9v2JX37YM6uthU+Ek9j73PNvvuovk9etdR5TcwpjTZ8dPJcH8l84brhZeiEfbVOO7NXuZszbeQUARERH/pTKey/1x5ZWX+3zMtMcj+VcnDwm/xbK1WzfiR4wg7ehR1xElNyhZHZo9BCs/hrjl5w0/0KoqtcsU5rmvYjmcdCqDNxAREZEroTLuJyLDI/nwlkl0f/RfvP5/lZgTCQc/+YSN7dtx+OuvdTUMubSWg6BgKZg1CP601CkowMNr3SM4dDyFEd+tcxRQRETE/6iM+xFjDDdVvIlP7/yaCkOHMeqBEvwWfJg9g59m4109Sd60yXVE8WUhhaHtS7A7GlZ/dt5w3XJFeKDlNfxneRwLNyU4CCgiIuJ/VMb9UKAnkO41ujOu/1z2/ONRPugYwpENsWzp3JntL79E2rHjriOKr4q4E8o3hu+HQvLh84YfbVOdqmEFeObLGI6fTM35fCIiIn5GZdyP5Q/Kz4MNHmLwiO/5aXQPFkR4OPHRFGLatSLh26+0dEXO5/HALa/B8QT46bXzhkOCAnitewR7Dp/gtdkbHAQUERHxLyrj2WzKI3WY8kgdpxlKhJZgYNthdHrvO74a3Jzd+Y5zYOAzLOvVieNbtHRF/qRcQ2jYG5aMg4Tz//toVKk4fZpXZtKvO1i2/ZCDgCIiIv5DZTwPqVS4Es/0/Tflp37K3G6V8GzYytbb72Dpi4+RdlxLV+QsrV+AoAIwezBk8H9QBravSflioQyetobkU2kOAoqIiPgHlfE8qH7pBjw6YhbHJ49kdf3CFJo6l2VtW7D6i/e0dEVOKxgGNz0DW36AjTPPGy4QHMjIrhFsPXCcMd9vdhBQRETEP6iM51HGGFrVv4NeHy9i26v3cSxfOvmefZM53VuyZe0i1/HEFzS+H8KuhdnPwKnk84avr16SO6MqMOHnrcTEnf9jTxEREbk0lfE8LtATyK1dnqL5rF/Yck9Lwjcf4FjP+5k2uAcJv+92HU9cCgiCW0ZB4g749e0MpwzpWIuSBfMxcNpqUlLTM5wjIiIiF6YyLgAUyF+ETkPGU/7br9gXVZk6X8ey7tZ2TPlgEMdPaT15nnXNjVDrdvj5H3A47rzhIqFBjOhcjw3xRxn305YcjyciIpLbqYzLOcIr1eTmSbMI/ter5AvOT/1R3/JNjxZ8uXA8p9J1G/Q86eYRYNNh7vMZDrerXYrb6pfl7R82s2nf0RwOJyIikrupjEuGrmnbmWZz/0vag3dRe2sq1zw8hrcfv5HvN8/SjzzzmmKV4LrHYe2XsP2XDKcMva02BYMDGTRtDWnp+u9DREQks1TG5YJMvnzUffx5as2ai20WyS1zD2H6PMnz/7yDlftXuo4nOen6x6FIRZg1GNLOv/NmiYLBDL29Dqt2JfLBom0OAoqIiOROKuNySfnKlaPBxM8oO/5dSuYrzl/HbWbFA39lyJcPsPXwVtfxJCcEhUL7EbAvFpZ/kOGU2+uXpc214bw+dyM7Dup3BiIiIpmhMi6ZVqTVjdSb8wNFHn6Apr956D50Ie8PuZ3hPw8lISnBdTzJbrVuhyot4YcRcPzgecPGGF7uUo8gj4env4jRciYREZFMUBmXy+IJDqbso49TY+YsijRtwd3z02j6zOc8OaY9Y1eN1ZVX/Jkx0GEUnDwKP47IcErpIiEM6ViLX7ce5LOlu3I4oIiISO6jMi5XJF+FClSd8D7l3xlLxaBwhkw+QeDwsfSa1J4pG6boyiv+qlRtaPJ3iP4A9q7OcEqvxhVoUbUEr8xcz97DJ3I4oIiISO6iMi5XpVDr1tSYOYsSDz7ADZsCGP6vRJaPHU63Lzszb8c8LVXwRzc+A/mLn/4xZwZ/v8YYRnaNIC3d8uz0WP03ICIichFOyrgxprgxZp4xZrP3uVgGc24yxqw665FsjOnsHTPGmJeNMZuMMeuNMY/m/LeQP3hCQwl//HGqfvMNxRo25W/z0nls7G7e/fgJes/qzYp9K1xHlKwUWhTavAg7f4WYaRlOqVgiP0+1r8kPG/bz9ao9ORxQREQk93B1ZvxpYL61tjow3/v6HNbaH621kdbaSKA1kATM9Q7fC1QArrXW1gKm5EhquajgKlWo+P5Eyo0ZQ8X0Irz8URo3fbyOAV/ew6M//H97dx4fVX3vf/z1mX2yswoFZXdht6bWpS4tUi22LtW6VevS1tre1v70Xqtd3VvFW3u96q+KVqvWfQG1grgv7XXDFlCKCyoqV0UUSAgkme17/zgnySSZJIAkZ5K8n4/Hecw5Z75n5jucB/A+3/nM95yumVf6kl2Ph+HT4dFfQ2NdwSYn7TWaz+9QxfkPLuOTusYe7qCIiEjvEFQYPxS4yV+/CTisi/ZHAgucc5v87R8CFzjncgDOuY+7pZeyxcyMioMOZNz8+Qz87instTTFNddHKHnoWY6YezjnP3e+Zl7pC0JhmHUZbPgQnv19wSbhkDH7yKlsbMxy7gPLeriDIiIivUNQYXw759yHAP7j0C7aHwPcnrc9DjjazBaZ2QIzm9BN/ZStFCotZbuzzmLs3LlUTpzKiQ81cPWd5Sx55j4OnnuwZl7pC7bfHaYdC89dBZ++VbDJ+KHlnD5jPA8t/ZCFyz7q4Q6KiIgUv24L42b2mJm9WmA5dAtfZzgwBViYtzsONDjnqoHrgBs6Of5UP7QvWrNGI7I9LT5hAjvcfBOfu2w2gzcYF/85zTnPDOCW5//IrPtmBTbzyjFXLuOYKzVa+5kdcB6EY7DwFx02+cF+45g4vIJfzXuVmk2aZUdERCRft4Vx59wBzrnJBZb7gdV+yG4K252VmRwFzHXO5f8vvgq411+fC0ztpB9znHPVzrnqIUOGfLYPJVvFzKj8xjcYt2A+A044nl2eXcUNN5ZwyGtl/Pb5izj8/sM180pvVT4M9vsZvPEwvPFIwSbRcIjZR05l7cYUFz30rx7uoIiISHELqkzlAeBEf/1E4P5O2h5L6xIVgHl4P+oE2A94Y5v2TrpFuLycYb/4BWPuu5eSseOZdfvb3PLAKEZ+mOHMp87k+AXH8/Lql4PupmypL/4QBo2Hh8+BTKpgk8kjKvnBvmO5++VVPPOGvqESERFpElQYvwSYaWZvAjP9bcys2syub2pkZqPxZk15usDxR5jZK8DvgO/1QJ9lG0nsvDOjbv0Lwy++mOSH6/jpVe9zzbLdWf/JB5z08EnezCvrNfNKrxGJeXfmXPsWvPDHDpudPmMCY4eU8vP7XmFjY6YHOygiIlK8AgnjzrlPnXMznHMT/Me1/v5Fzrnv5bVb6Zwb0TRrSt7+9c65g51zU5xzezrnCt8KUIqWhUJUHfFNxi2YT9VR32Lgg8/xhzkZLqybyYsfvsDhD2jmlV5lwgGw49fg6dlQ+2HBJolomNlHTOWDmnpmP/xaD3dQRESkOOkOnBKocFUVw887j9F33UV0+HB2unIBf1kwjlPLv8a8FfM4eO7BXPXPqzTzSm9w4MWQTcFj53XYpHr0QE7cczQ3P/8uL61c23N9ExERKdTBUUIAACAASURBVFIK41IUklMmM/qO2xl23nlk33ybr/z6Ie5+9xvMGLw31y69lln3zeL2124PZOYV2UyDxsGeP4ald8B7L3TY7KwDd2JEVZKz711KQzrbgx2UzZXLOWo2pXnv002kGwaSSVXwaV0jmWyu64NFRGSLRILugEgTC4cZcMzRlH91Jh///vfU/OVuTnlsGN/+0en8vvzv/PaF33Lr8ls5fdfTmTlqJmYWdJelrX3+HZbcAQt+Bt9/wrs5UBul8Qi/++YUTvjTi1zx+JucfdDOAXS073POUZ/OUlOfZv2mdPNjbX2a9fWpVvvzl/Wb0tQ2pGmZ3Mi7J9tuFz0GQFk8QmUy2rxUlfjr/mNVMlbwufJ4RH9nRUQKUBiXohMZOJDPXXwxVUccyUcXXED4N5dz/t578/73f8N/rr6Nf3/635k6ZCpn7nYmu223W9DdlXzxMvjqhXDvd+Gft8BuJxVsts+EIRxVPZI5z7zNwVOGM3lEZc/2sxdJZXJ5Ybl9iG4J2E3bKWrqM9TUp0hnO54uNBwyPzxHqUhGGVASY8zg0lb7qkpiXPj3y3EuzJnVP/Jf1wvztf57r/i4znvvTWlSnYych4yWEF8Sa36f/OBekbevqqlNSZREtP1FnYhIX6EwLkWr5PO7Muaeu1l3+x2sueIKBn3/Ra455WSeO+AYrlw+h5MePon9t9+fMz5/BmOrxgbdXWky+Qh46Xp4/AKYeCgkBxRs9suDJ/LU62s4656lPPDjvRmVLnwXz74gl3NsaMg0j0gXGpX2QnTL/qaAvSnVeSlPeTzSMipdEmWnYeVUJmOtR6ZbBWxvu2wzR6ovW/ouACftPabTds45GtK59p+n6bM0jc43feZNKd77dGNz+1wntxmIRUIdBPdYwdH5/KAfCasaU0SKm8K4FDWLRBh4wvFUHHQgqy+7jLXXzmHyg5/jrp+fxdxdVnH9K9dz+AOHc/j4w/nR9B8xtGRo0F0WM/jabJizHzx1CXzt0oLNKpNRLjpsMqfe8jLXPFX8Qbyp7CO/5KOj0eq2gbt12Ud7iWioVYnHyAElVI3IC5X5ITNvVLk8ESmasGlmJGNhkrEwwyoTW3RsLueoS2WoafNnm3/xkv/cB+sbWP7hBmrq09R1MU1mV2U1lR2EepXViEhPURiXXiEyZAgjZs+m6sgjWX3hhXz8kzM4cP/9OeQ/ruOGtQ9x5+t3Mv+d+Zww8QROnnQyZbGyoLvcvw2fCrudDC9eB58/EbabWLDZVycN4+tTh3PlEyvYafgQkrHun8qypeyjdYguHKZTrba3pOxjYKlX9tE8olvSvpa6qW1/L8MIhYyKRJSKRJTtt/DYdDbXqkynbXAvVFbTNEKfymxZWU3+iHtHZTWVySiJaEhBXkQ2m8K49Cqlu+/OmPvuY+3Nt7Dm6qvZeMRzfPfU73PcUfdw5b+uYc7SOdzzxj38YOoP+NaO3yIajgbd5f7rK7+CV++Fh8+G7zzgjZgXcP4hk/j7ik94e803mfi5OZv10tmcY0ND+xDdUhLR8Wh1l2UfiUirwDy8MklFgRDd6keLJTFKY2EFsABEwyEGlcUZVBbf4mMbWn3TUbisJr+0ZkvKagoH96bAHmkJ720uzKJF8k2HiPQchXHpdSwaZdB3T6Hi4FmsvvRSPrnyKqL3P8C5v/4VJx58Ipe/fDm/e/F33Lr8Vn76+Z9q5pWglAz0Avn8/4B/3Q+TDivYbFBZnPMOmcRP70jz3qdf486X3mtXX9yq5nhTig2NmS7LPvJn9dh+YAmTC4WjNiOexVT2EZRMLkNtqpbaxlpqUjVk2Qg4nln1TNBd614xSMRgWCUM67BRGAjjXIL6dJZNjRk2prJsbMywsTHLxlTGWxozbGrabszyVl2GjWu9ffVdTOeZjIYpiYcpjUUojUcoiYUp8x9LExFKY2Hq60sxy3LV8w9u4z8E+SwaGrzyLJ2X4tHQkOhoHKiomOvsf7Q+prq62i1atKhH3/Pkh08G4MaDbuzR9+1PNv7P//DRBReSWrmS8pkzGXrO2Tzv3uIPL/+BFetXMHXwVM7Y7Qyqh1U3H7Pw4N0BOPChF4Pqdv+QzXi14w018G8vQqykYDPnHLte+J+s39RSzhIOWfsR6I7KBkpanlPZh/fnWZeuozZVS01jTcHH2sbadts1qRrdYEtE+pRc/UiWnbagx9/XzF52zlV33VIj49IHlO61F2MeuJ+1N9zIJ9dcQ93f/sbEH/6Qu79zOw++v4CrFl/FyQtP1swrQQhHvB9w/vlg+PsV8OWfF2xmZkzY7jbq00O59vh5VCajKvsAGjINHYfpzoJ1qpac67geOhqKUhmvpDJWSUW8gmElw9hxwI5UxCqoiFdQEaugMl5JRayCMx+9BIAbv174h7jSc1KZLBsas5yxcDbOhfn1Pj8OukuS58JnrwLQeSkiFz57FVEr/kFnhXHpE0KxGINP+wEVX/86qy/5HWsuv5yaefP46m9+zUGH/5Vbl9/Kn175U/PMKxMTjsqG/h30eszoL3nTHf79v2D6cTBgVMFmZo6S2GpGVCV7uIPdq23ZR6HHts83BetULtXh64Ys5IXnWEt4Hlk2sl2YbnqsiFc0h+9EOLHZFzphrgBgypAp2+TPQz67WCwDZDhi0l5Bd0XyzH7x9wA6L0Wk6ZwUO4Vx6VNiI0ew/VVXseGpp1h98W9576STqZg1ixPPPpsjvnkEc5bO4Y7X7+CBWRmGbDBunv9tEuEEsXCMRDhBPBJvtx0PtyyJSN5zXWxHQ9F+P7LbbOYF8PoCeOSXcPRfgu7NFmsq++hslLrt6HTTY1dlH6XR0laheWzV2FYj1IWCdWW8ktJoKSHr3/XtIiJ9gcK49Enl++9P6R578Ol11/PpdddR99RTDP7JT/jZ8Wdy3C7HceHsb1CTdJRESkhlU9Sl62jMNNKQbSCVTdGQbaAx09jpyGRXDGsO5/Fw+5DfVejfmouAeDhenAGtciTscyY8cRG89SSM+3KPd8E5R0O2ocPQ3LbkY0vKPmKhWKug3Lbso2lEuu1jeaycaEgz/oiI9GcK49JnhRIJhvzkx1QeeggfXXQRH196KTVz5zLsN7/miH/EADjwF9d1+ho5lyOVTdGYbaQhkxfUC2w3ZhubA33b7fyA3/Rcbaq23b6m13VsfY1bLOSF8qaA3xz6/YDfdrt5KXCBsLnbkdBm/FOy50/gn3+Bh8+B0/4GWzntZDqXZkNqQ9dhukA5yOaUfTSXdcQqGFk+ssOR6fxR60Rky25yIyIi0kRhXPq82A47sP2111L3+ON89Nvf8u7xJzCwLEJdZYxcKkUoFuvw2JCFSEQSJCIJKuOVPdJf5xyZXKbLUN/VdtuAn8qmqM/Us75xfcELh0yu8zsZdiZikc0r6Rk3jcTKZ4n/9UTiI6pbXTCsC3kjz9e/cn3BHyRubtlHWbSs1Yh0ftlH25Hp/GCtsg8REQmCwrj0C2ZG+QEHULrXXnxyzbW4OXMoq8vwRvUXSEycSHL6dJLTp5GcPp3osI5nGe6pvkbDUaLhKOWU99j7ZnKZ5jCfyqZoyDS0C/Rdbbf6piDvgqAuXdfymuWVNKxdSqr2dRrzR6r9gfIr/nEF8XC8VVAeVuqVfbQdkW77WB4r37xRehERkSKh/7WkXwmVlDD0zDNYsvBW4g1Zdjr4OOoXL2bdbbex9s9/BiAybBjJadOaA3pi4kRC8S2/u19vEwlFiIQilEQLzwW+zax5A/64J0w7ltwh/91cBnTSTfsCcPspL6jsQ0RE+g2FcemXcpEQ9WUhtvvZWQC4VIqG11+n/p+LqV+8mPolS9iwcCHg3fEzPnEXSqZPbw7pkeHDNVPK1hqyI3zxNHjuakLVJ5MYsRuJSIIo3p+ngriIiPQnCuMigMViJKdMITllCnznBADSH39M/ZIlNCxZwqbFi1l3512svelmACJDh3oj59Omkdx1OolJk/rF6Pk2s9/ZsPQuWHA2nPIIhFSrLSIi/ZPCuEgHokOHEp05k4qZMwFw6TQNr7/hjZz7y4ZHHvEbR0nsvHNL7fm06URHfE6j5x1JVMDM82HeD2HpHTD9OE66y68fPzXYrklr59y20ls5OdBuiIj0WQrjIpvJolGSkyeRnDwJjv82AJlPPqF+yRI/nC9h/T33sO6WWwAIDxncqrQlMXkyoYRKMJpNPQZe+hM8ei7s/PWgeyMiIhIIhXGRzyAyeDDlM2ZQPmMGAC6T8WrP8wL6hkcf8xtHvNHzph+H7jqd6IgR/Xf0PBSCWbPhuhnwzOygeyMiIhIIhXGRbcgiEZKTJpGcNAmOOw6AzNq11C9e0lzasn7uXNbdeisA4cGD/XA+zXucPJlQSTfPZlJMRuwGux4Pz/+R0uRANtbrbpTFJu7qg+6CtHHurcu9FZUOFZVR6beC7oL0UgrjIt0sMnAg5V/5MuVf8W4B7zIZGt98s3nkvH7xYuoef9xrHA6T2Gmn5jnPk9OnE91++749ej7jXPjX/UwcW8NLywYF3RsRka2i370Un95y4aowLtLDLBIhscsuJHbZhQHHHgtAZt26VqUtNfPuZ91ttwMQHjiwpbRl2jSSUyYTKi0N8iNsW2VDYP+fM2Thzxk6sCHo3oiIiPQohXGRIhAZMIDy/fenfP/9AXDZLI0rVnjznvshve7JJ73GoRDxnXYiOW0qyenTKZk+neioUb179Hz377Phvl+z685r4eo9YOAYGDCm9WPl9hCJBd1TERGRbUphXKQImV+ukthpJwYcczQA2fXrqV+6tLn2vPbBv7L+jjsBCFdVNc957s3cMoVwWS8aPQ9HeXn5IEYNr2PMLmNg7Tvw1pOQyatXthBUjoQBo9sH9QFjvOkSRUREehmFcZFeIlxVRdm++1K2r3fbeJfN0vjWWy2150uWUPf0017jUIj4hAktpS3TpxMbM7qoR883NURY/k4VY471ynNwDjZ8BOtWwrp3vIDe9PjaX2HTp61foGSQF8oHjG4f1MuHQRF/dhER6b8UxkV6KQuHSey4I4kdd2TAUUcBkK2p8UfPvdKW2vnzWX+nP3peWUkir7QlMXUq4bKyID9C58ygYri3jNqz/fMNtV44X7eydVBf9SIsuw9crqVtJNk6pOevV+2g8hcREQmMwrhIHxKurKRsn30o22cfAFwuR+rtt6lfvJhNixfTsGQJnzz7N2/U2Yz4+PEtdw2dPp3YmDFYb7k1faIChk/zlrYyKah5vyWk5wf2QuUvFSNh4Oi80fS89URlD30gERHpjxTGRfowC4WIjx9PfPx4qo48EoBsbS31S1/xyluWLKF24ULW3303AKGKCpJTpzZPq5icNpVweXmQH2HrRGIwaJy3tOUc1K1uPZreFNhfewg2fdK6fXJg4R+UDhgNZcO8mxeJiIhsJYXxbnbjQTcG3QWRVsIVFZR9aW/KvrQ34I+ev/NOqxsTfXL11c2j57FxY5tLW5LTphEbN673jJ4XYubVkJcP66T8ZWX7OvVVLxUof0l0/IPSqu0hEu+pTyUiIr2UwrhIP2ehEPFx44iPG0fVEd8EIFtXR8PSpWzyR8/rHn2MmnvuBSBUXu6NnjfN3jJ1KuHKPlTKkaiA4VO9pa1sGta/lxfUV7YE9neehvSmvMbWMvtLoZF1lb+IiAgK4yJSQLisjNK99qJ0r70AcM6Remdl3o2JFvPJNddAzhsljo0d26r2PD5uHBYOB/kRukc42kX5y8ftR9TXvQOvzS9Q/jKg8Ij6wDEqfxER6UcUxkWkS2ZGfOwY4mPHUHX4YQBk6zbS8OorzVMr1j3xBDX33QdAqLS0+aZEyWnTSE6bRriqKsiP0P3MoHw7b9lhj/bPN25oP/PLundg1SJYNg9ctqVtfvlL25H1qh1U/iIi0ocojIvIVgmXlVK6xx6U7uEFT+cc6XffbS5tqV+8hE+uubZl9HzMmOY5z5O7Tic+fnzfHD3vSLwchk3xlrbyy1+aA7v/2GX5y+jWI+vJPn7RIyLSxyiMS790x08mAXBgwP3oS8yM2OjRxEaPpuowb/Q8t3Ej9a8uay5tqXv6aWrmzQMgVFJCYupUr7Rl2jRCWUcu3E9vzLNF5S8rW9ZfXwAb17Ru37b8JX9kvXy4yl9ERIqMwriIdJtQaSmlX9yd0i/uDvij5++/33LX0MWL+fS66yGbZRSQCTlWfGUGFoth0aj3mL/e6WPLeigWA/+xXdvNfb1otDhmjdmq8peV8L8vFy5/qRrVforGAWNgwCiVv4iIBEBhXER6jJkR22EHYjvsQOUhhwCQ27SJhmXL+Oe/fYdoFgZ9oRqXTpNLpXDpNM5/zNXWtmy3ea5pH85t2w77oTwUjUIsSij6GcJ9rP2+z3Sx0HSh0FX5S/7Nj5pH1lfCO89CemP+2YGKES0B3Q/slWUpMhmDmlXenUwjcYgmIdSPSoxERLqRwriIBCpUUkLJF75ATYVXorL7pZdu9Wu5TKZgSG8K9xQI+S6V7vCYDh/TKf+4FLlUilxdQ/N2wddLpyGb7foDbIlIpHXQj/oXC7Eo1ulFwygsOt5rF8lg2Y1YegOWqcVqa7C3PsUaX8fSGwiFHVMGQyjk2Hj2rlgILOywkMMiESwWx+IxLJbA4nlLLNk6uEcS/mPc2x9NtH8+kmjZH03k7ct7Phz1vikQEelDFMZFpM+wSASLRCCZDLor7bhstuuQn3fh0PpioeOQ39XFQ27jRnLr17VciBR4nfYXChFgwBZ8uiyw0V8AAwv7S1OAN0colINQjlAIL9CHnN/GX88P+01twvnrhkUj/oVArHkJxWL+hUG8zYVBifeYLMUSJd5j04XCllwQ6AJARLqRwriISA+wcBhLJov3QiFd+BuCZ0/5BuZgzz/c0vm3DJ1dLLR6bMQ1NuJSjeQaG/wLDe/4XEMKl/a/3UhncZkMZHOd9DzlL1vAOgn7/sVAqO2FQTiERcLeEg17FwPRSN63Ev43ErF4yxKPY/EkFk8QiiexRBJLlOY9lmAl5d56sgxLlmOJsl5VBuSc82ZLyuVar+cc5LIF9uc6aJ/36O9v1TZ/fzbn3QW36X2a1v393nHefpfNtqxv1n7/PV3TZ8jhcn7bXA7nci3rBfYPWueVyX10wYVBnxm/ZM+Ba7PdvI5/N+ECbZrb0npfR/tx7Y9ves1Cr9v2uYKv0UG/XZv376zfzjE+10C6FyTdXtBFERHpThYOe9NMJhLtnkvFvFHhkurqnu4WAC6X28yQX7g0yaXTuMYULtWAa9iEa6zHNdTjGhu8ff6FgWtsbLkwSKfJpdP+hUEGl8rg0llymSxkcuSyGVwmDblNXX+ALZF/odD8rYJ5SyTkXRREQ+xY3wjAe1+r9kJtcxZxeZmkzXqug/15x3W5nmu9r98xbzGzguuV/oVj7dw7Ch/f6W9aCjznOti/Ve37Kmv10Ha/c1HilZke7dHWCCSMm9lA4E5gNLASOMo5t65Nmy8Df8jbtTNwjHNunpnNAC4DQkAdcJJzbkUPdF1ERHqQhUJYPA7x4pvpxeVy3u8UOrogaGjA1W/wLgLq63CNm7z1hnp/vcG7OGj6lqCxEZdu9C4e8kuT0mn/9xBN3xZ4QSPXmGoVCM1fCLVsAy3rIS81mh8eMcNCbdrkvVb74Jl3XPN64eMKH9vBcXgXHs37yTsulNcmfx+b836F3rPzNp1+li6sf20pzhkDJn3ev5IK+a8V8r7paN7XxdLc1vL2FzreOnjdQscX6oN18LpNba2D192cz1bo+LZtrYPXbWpb6M+n7fGdn5f5B0wEwozv8uwFK6iR8XOAx51zl5jZOf722fkNnHNPAtOBpvC+AnjEf/qPwKHOueVm9iPgV8BJPdR3ERER70IhFoNYrEff1wsYMOuxpT36vtK5/2k6L5cvDLgn0tsENYnuocBN/vpNwGFdtD8SWOCca/pO0AEV/nol8ME276GIiIiISDcLamR8O+fchwDOuQ/NbGgX7Y8BLs/b/h4w38zqgVqgwJ0wRERERESKW7eFcTN7DBhW4KlfbuHrDAemAPnf+5wBzHLOvWBmZ+EF9e91cPypwKkAO+yww5a8tYiIiIhIt+q2MO6cO6Cj58xstZkN90fFhwMfd/JSRwFznXNp/9ghwDTn3Av+83cCD3fSjznAHIDq6ur+9jNjERERESliQdWMPwCc6K+fCNzfSdtjgdvzttcBlWa2o789E1i+zXsoIj2q0ZI0WvHNwS0iItKdgqoZvwS4y8y+C7wHfAvAzKqB05xz3/O3RwPbA083Heicy5jZ94F7zSyHF85P6dHei4iIiIhsA4GEcefcp8CMAvsXkVf77ZxbCYwo0G4uMLcbuygiIiIi0u2CKlMREREREen3FMZFRERERAKiMC4iIiIiEhCFcRERERGRgAQ1m4qISCuXHDcagMOD7YaIiEiPUhgXEZEOae53EZHupTIVEREREZGAKIyLiIiIiAREYVxEREREJCAK4yIiIiIiAdEPOEVEpEOa5UZk8/z5qBgAswLuh7Q4/9u7AMV/TjQyLiIiIiISEI2Mi4iI9CK9ZbSvv3k3Oi7oLkgvpZFxEREREZGAaGRcREQ6NHF4RdBdEBHp0zQyLiIiIiISEIVxEREREZGAKIyLiIiIiARENeMiUhRUmywiIv2RRsZFRERERAKiMC4iIiIiEhCFcRERERGRgCiMi4iIiIgERD/gFBGRDt140I1Bd0HaeOHke4PughSg81J8ess50ci4iIiIiEhAFMZFRERERAKiMC4iIiIiEhCFcRERERGRgCiMi4iIiIgERGFcRERERCQgCuMiIiIiIgFRGBcRERERCYhu+iMiRUE3lxERkf5II+MiIiIiIgFRGBcRERERCYjCuIiIiIhIQBTGRUREREQCojAuIiIiIhIQhXERERERkYAojIuIiIiIBERhXEREREQkIArjIiIiIiIB0R04pV/S3R5FRESkGGhkXEREREQkIArjIiIiIiIBCSyMm9lAM3vUzN70Hwd00G62mS0zs+Vm9t9mZv7+3czsFTNbkb9fRERERKS3CHJk/BzgcefcBOBxf7sVM9sL2BuYCkwGvgDs5z/9R+BUYIK/HNQDfRYRERER2WaCDOOHAjf56zcBhxVo44AEEAPiQBRYbWbDgQrn3HPOOQfc3MHxIiIiIiJFK8gwvp1z7kMA/3Fo2wbOueeAJ4EP/WWhc245MAJYldd0lb+vHTM71cwWmdmiNWvWbOOPICIiIiKy9bp1akMzewwYVuCpX27m8eOBXYCR/q5HzWxfoL5Ac1foNZxzc4A5ANXV1QXbiIiIiIgEoVvDuHPugI6eM7PVZjbcOfehX3bycYFmhwPPO+fq/GMWAHsAt9AS0PHXP9h2PRcRERER6X5Blqk8AJzor58I3F+gzXvAfmYWMbMo3o83l/tlLRvMbA9/FpXvdHC8iIiIiEjRCjKMXwLMNLM3gZn+NmZWbWbX+23uAd4CXgGWAEuccw/6z/0QuB5Y4bdZ0IN9FxERERH5zMybjKR/qK6udosWLQq6GyIiIiLSh5nZy8656s1pqztwioiIiIgERGFcRERERCQgCuMiIiIiIgFRGBcRERERCYjCuIiIiIhIQBTGRUREREQCojAuIiIiIhIQhXERERERkYD0q5v+mNka4N0A3now8EkA7yud03kpPjonxUnnpfjonBQnnZfiE9Q5GeWcG7I5DftVGA+KmS3a3LswSc/ReSk+OifFSeel+OicFCedl+LTG86JylRERERERAKiMC4iIiIiEhCF8Z4xJ+gOSEE6L8VH56Q46bwUH52T4qTzUnyK/pyoZlxEREREJCAaGRcRERERCYjCuIiIiIhIQBTGe4iZXWhmS81ssZk9YmafC7pP/Z2ZXWZmr/nnZa6ZVQXdJwEz+5aZLTOznJkV9XRUfZ2ZHWRmr5vZCjM7J+j+CJjZDWb2sZm9GnRfxGNm25vZk2a23P+366dB90nAzBJm9qKZLfHPy/lB96kjqhnvIWZW4Zyr9ddPByY6504LuFv9mpl9FXjCOZcxs0sBnHNnB9ytfs/MdgFywLXAfzjnFgXcpX7JzMLAG8BMYBXwEnCsc+5fgXasnzOzfYE64Gbn3OSg+yNgZsOB4c65f5hZOfAycJj+rgTLzAwodc7VmVkU+BvwU+fc8wF3rR2NjPeQpiDuKwV0FRQw59wjzrmMv/k8MDLI/ojHObfcOfd60P0QdgdWOOfeds6lgDuAQwPuU7/nnHsGWBt0P6SFc+5D59w//PUNwHJgRLC9Euep8zej/lKU2UthvAeZ2cVm9j7wbeA3QfdHWjkFWBB0J0SKyAjg/bztVShgiHTKzEYDuwIvBNsTAe8bPjNbDHwMPOqcK8rzojC+DZnZY2b2aoHlUADn3C+dc9sDtwI/Dra3/UNX58Rv80sgg3depAdsznmRwFmBfUU5qiRSDMysDLgX+H9tvg2XgDjnss656XjffO9uZkVZ2hUJugN9iXPugM1sehvwEHBuN3ZH6PqcmNmJwNeBGU4/oOgxW/B3RYKzCtg+b3sk8EFAfREpan5N8r3Arc65+4Luj7TmnFtvZk8BBwFF9+NnjYz3EDObkLd5CPBaUH0Rj5kdBJwNHOKc2xR0f0SKzEvABDMbY2Yx4BjggYD7JFJ0/B8K/glY7py7POj+iMfMhjTNkmZmSeAAijR7aTaVHmJm9wI74c0S8S5wmnPuf4PtVf9mZiuAOPCpv+t5zXATPDM7HLgSGAKsBxY75w4Mtlf9k5nNAv4LCAM3OOcuDrhL/Z6Z3Q7sDwwGVgPnOuf+FGin+jkz+xLwLPAK3v/xAL9wzs0PrldiZlOBm/D+/QoBdznnLgi2V4UpjIuIiIiIBERlKiIiIiIiAVEYFxEREREJiMK4iIiIiEhAFMZFRERERAKiMC4iIiIiEhCFcRGRfsLM6j7j8feY2Vh/vczMVRhx1wAAAhVJREFUrjWzt8xsmZk9Y2ZfNLOYv66byomIbAaFcRER6ZKZTQLCzrm3/V3XA2uBCc65ScBJwGDnXAp4HDg6kI6KiPQyCuMiIv2MeS4zs1fN7BUzO9rfHzKz/++PdP/VzOab2ZH+Yd8G7vfbjQO+CPzKOZcDcM697Zx7yG87z28vIiJd0NeIIiL9zzeB6cA0vDs5vmRmzwB7A6OBKcBQYDlwg3/M3sDt/vokvDujZjt4/VeBL3RLz0VE+hiNjIuI9D9fAm53zmWdc6uBp/HC85eAu51zOefcR8CTeccMB9Zszov7IT1lZuXbuN8iIn2OwriISP9jW7gfoB5I+OvLgGlm1tn/IXGgYSv6JiLSryiMi4j0P88AR5tZ2MyGAPsCLwJ/A47wa8e3A/bPO2Y5MB7AOfcWsAg438wMwMwmmNmh/vogYI1zLt1TH0hEpLdSGBcR6X/mAkuBJcATwM/8spR7gVV4Nd/XAi8ANf4xD9E6nH8PGAasMLNXgOuAD/znvgzM796PICLSN5hzLug+iIhIkTCzMudcnT+6/SKwt3PuIzNL4tWQ793JDzebXuM+4OfOudd7oMsiIr2aZlMREZF8fzWzKiAGXOiPmOOcqzezc4ERwHsdHWxmMWCegriIyObRyLiIiIiISEBUMy4iIiIiEhCFcRERERGRgCiMi4iIiIgERGFcRERERCQgCuMiIiIiIgH5P54iDptYogqzAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid_acc.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid_acc.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid_acc.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid_acc.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(tuned_parameters['C'])\n",
    "number_penaltys = len(tuned_parameters['penalty'])\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(tuned_parameters['C'])\n",
    "fig=plt.figure(figsize=(12,8))\n",
    "for i, value in enumerate(tuned_parameters['penalty']):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    plt.errorbar(x_axis, -test_scores[:,i], yerr=test_stds[:,i] ,label = tuned_parameters['penalty'][i] +' Test')\n",
    "    plt.errorbar(x_axis, -train_scores[:,i], yerr=train_stds[:,i] ,label = tuned_parameters['penalty'][i] +' Train')\n",
    "    \n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'logloss' )\n",
    "plt.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
